package com.newx.limit.entity;

import lombok.Builder;
import lombok.Data;

import java.util.concurrent.TimeUnit;

/**
 * 自定义限流注解
 */
@Data
@Builder
public class Limiter {
    /**
     * 资源的key,唯一
     * 作用：不同的接口，不同的流量控制
     */
    private String key;

    /**
     * 最多的访问限制次数
     */
    private Integer limitNum ;

    /**
     * 获取令牌最大等待时间
     */
    private Long seconds;

    /**
     * 得不到令牌的提示语
     */
    private String msg;

//    private Limiter(Builder builder) {
//        this.key = builder.key;
//        this.limitNum = builder.limitNum;
//        this.seconds = builder.seconds;
//        this.timeunit = builder.timeunit;
//        this.msg = builder.msg;
//    }
//
//    // Builder模式
//    public static class Builder {
//        private String key;
//        private Integer limitNum ;
//        private Long seconds;
//        private TimeUnit timeunit;
//        private String msg;
//
//        public Builder key(String key) {
//            this.key = key;
//            return this;
//        }
//        public Builder limitNum(Integer limitNum) {
//            this.limitNum = limitNum;
//            return this;
//        }
//        public Builder seconds(Long seconds) {
//            this.seconds = seconds;
//            return this;
//        }
//        public Builder timeunit(TimeUnit timeunit) {
//            this.timeunit = timeunit;
//            return this;
//        }
//        public Builder msg(String msg) {
//            this.msg = msg;
//            return this;
//        }
//        public Limiter build() {
//            return new Limiter(this);
//        }
//    }
//
//    public String getKey() {
//        return key;
//    }
//
//    public void setKey(String key) {
//        this.key = key;
//    }
//
//    public Integer getLimitNum() {
//        return limitNum;
//    }
//
//    public void setLimitNum(Integer limitNum) {
//        this.limitNum = limitNum;
//    }
//
//    public long getSeconds() {
//        return seconds;
//    }
//
//    public void setSeconds(long seconds) {
//        this.seconds = seconds;
//    }
//
//    public TimeUnit getTimeunit() {
//        return timeunit;
//    }
//
//    public void setTimeunit(TimeUnit timeunit) {
//        this.timeunit = timeunit;
//    }
//
//    public String getMsg() {
//        return msg;
//    }
//
//    public void setMsg(String msg) {
//        this.msg = msg;
//    }
}
